#ifndef __MACRO_H__
#define __MACRO_H__

// 这两个宏用于将参数 x 转换为字符串
#define str_temp(x) #x
#define str(x) str_temp(x)

// 这两个宏用于将两个标识符拼接在一起，形成一个新的标识符。
#define concat_temp(x, y) x ## y
#define concat(x, y) concat_temp(x, y)
// 这些宏用于将多个标识符按顺序拼接在一起，形成一个新的标识符。
#define concat3(x, y, z) concat(concat(x, y), z)
#define concat4(x, y, z, w) concat3(concat(x, y), z, w)
#define concat5(x, y, z, v, w) concat4(concat(x, y), z, v, w)

#define unalign_rw(addr, len)	(((unalign *)(addr))->concat(_, len))

#endif
